using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using DictToObject.FieldExpectations;

namespace DictToObject.Builders
{
    public interface IDictToObjectBuilder<T> where T : new()
    {
        T Build(IDictionary<string, string> values);
        IRequiredFieldExpectation AddRequiredField<TField>(string key, Expression<Func<T, TField>> field);
        IOptionalFieldExpectation AddOptionalField<TField>(string key, Expression<Func<T, TField>> field, TField defaultValue);
    }
}